home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 21
/
AMIGAplus Sonderheft 21 (1999)(ICP)(DE)[!].iso
/
PublicDomain
/
Anwendungen
/
uuepro
/
lowlevel.asm
next >
Wrap
Assembly Source File
|
1999-08-23
|
3KB
|
181 lines
; low level uuepro functions
XDEF _checksum
XDEF _uuencode
XDEF _relspf
XREF _SysBase
XREF _testbreak
section text,CODE
_checksum
movem.l a0/d1/d2,-(sp)
clr.l d1
count ror.w #1,d0
move.b (a0)+,d1
add.w d1,d0
subq.l #1,d2
bne.s count
movem.l (sp)+,a0/d1/d2
rts
chrp62 moveq #62,d7
chrp move.w d0,-(a5)
subq.l #1,d0
dbf d7,chrp
rts
_uuencode
movem.l a0-a3/a5/d1-d7,-(sp)
move.l _SysBase,a5
btst.b #1,297(a5) ;AttnFlags+1
sub.l a5,a5
beq.s .3
tst.w utflag
bne.s .2
lea tablend,a5
move.w #$5f5f,d0
moveq #62,d3
.1 bsr.s chrp62
move.b #$60,d0
clr.l d7
bsr.s chrp
sub.w #$100,d0
dbf d3,.1
move.w #$605f,d0
bsr.s chrp62
move.w #$6060,-(a5)
addq.w #1,utflag
.2 lea table,a5
moveq #12,d3
move.w #4095,d7
bra.s .4
.3 moveq #6,d3
moveq #14,d7
.4 moveq #$3F,d4
moveq #$40,d5
moveq #$20,d6
clr.l d2
enc move.l a3,d1
cmp.l #45,d1
bls.s .1
moveq #45,d1
.1 add.b #32,d1
move.b d1,(a1)+
sub.b #33,d1
divu #3,d1
move.l a5,d0
bne.s enc20
enc00 move.b (a0)+,d0
add.b d0,d2
lsl.l #8,d0
move.b (a0)+,d0
add.b d0,d2
lsl.l #8,d0
move.b (a0)+,d0
add.b d0,d2
rol.l d7,d0
and.b d4,d0
bne.s .1
add.b d5,d0
.1 add.b d6,d0
move.b d0,(a1)+
rol.l d3,d0
and.b d4,d0
bne.s .2
add.b d5,d0
.2 add.b d6,d0
move.b d0,(a1)+
rol.l d3,d0
and.b d4,d0
bne.s .3
add.b d5,d0
.3 add.b d6,d0
move.b d0,(a1)+
rol.l d3,d0
and.b d4,d0
bne.s .4
add.b d5,d0
.4 add.b d6,d0
move.b d0,(a1)+
dbf d1,enc00
move.l a6,d0
beq.s endc
bra.s linesum
enc20 tst.l a6
beq.s enc20ns
enc20s move.l (a0),d0
rol.l d3,d0
add.b (a0)+,d2
and.w d7,d0
move.w (a5,d0.w*2),(a1)+
rol.l d3,d0
add.b (a0)+,d2
and.w d7,d0
add.b (a0)+,d2
move.w (a5,d0.w*2),(a1)+
dbf d1,enc20s
linesum and.b d4,d2
bne.s .1
add.b d5,d2
.1 add.b d6,d2
move.b d2,(a1)+
clr.l d2
bra.s endc
enc20ns move.l (a0),d0
rol.l d3,d0
addq.l #3,a0
and.w d7,d0
move.w (a5,d0.w*2),(a1)+
rol.l d3,d0
and.w d7,d0
move.w (a5,d0.w*2),(a1)+
dbf d1,enc20ns
endc move.b #10,(a1)+
sub.w #45,a3
subq.l #1,a2
move.l a3,d0
ble.s .3
move.l a2,d0
ble.s .3
and.l d4,d0
bne enc
movem.l a0-a1,-(sp)
jsr _testbreak
movem.l (sp)+,a0-a1
tst.l d0
beq enc
.3 move.l a1,d0
movem.l (sp)+,a0-a3/a5/d1-d7
rts
_relspf movem.l a2/a3/a6,-(sp)
move.l 4*4(sp),a6
move.l (a6),a3
move.l 5*4(sp),a0
lea.l 6*4(sp),a1
lea.l nc(pc),a2
move.l _SysBase,a6
jsr -522(a6) ;RawDoFmt()
.1 tst.b (a3)+
bne.s .1
subq.l #1,a3
move.l 4*4(sp),a6
move.l a3,(a6)
movem.l (sp)+,a2/a3/a6
rts
nc move.b d0,(a3)+
rts
section __MERGED,DATA
utflag ds.w 1
section qq,bss
table ds.w 4096
tablend
end